{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# pandas 进阶修炼 ｜早起Python\n",
    "<br>\n",
    "\n",
    "**pandas进阶修炼系列由公众号【早起Python & 可视化图鉴】 原创**\n",
    "\n",
    "**转载及其他形式合作请与我们联系（微信号`sshs321`)，未经授权严禁搬运及二次创作，侵权必究！**\n",
    "\n",
    "\n",
    "本习题基于 `pandas` 版本 `1.1.3`，所有内容应当在 `Jupyter Notebook` 中执行以获得最佳效果。\n",
    "\n",
    "不同版本之间写法可能会有少许不同，如若碰到此情况，你应该学会如何自行检索解决。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 实战｜客户流失分析\n",
    "\n",
    "\n",
    "\n",
    "<br>\n",
    "\n",
    "\n",
    "**<font color = '#5172F0'><font size=3.5>必读👇👇👇</font>**\n",
    "    \n",
    "**本习题微信公众号「<font color ='#F77802'>数据STUDIO</font>」号主云朵君友情提供，授权公众号「早起Python」二次整理发布**\n",
    "\n",
    "    \n",
    "### 项目目的\n",
    "\n",
    "深入了解用户画像及行为偏好，挖掘出影响用户流失的关键因素，并通过算法预测客户访问的转化结果，从而更好地完善产品设计、提升用户体验！\n",
    "\n",
    "### 数据说明\n",
    "\n",
    "此次数据是携程用户一周的访问数据，为保护客户隐私，已经将数据经过了脱敏，和实际商品的订单量、浏览量、转化率等有一些差距，不影响问题的可解性。\n",
    "\n",
    "### 案例说明\n",
    "\n",
    "分类信息app，通过数据挖掘分析影响用户流失的关键因素、深入了解用户行为偏好以此做出调整，提升客户留存率，增强客户黏性，并通过随机森林算法预测客户流失，通过特征创造使模型分数提高2个百分点。\n",
    "\n",
    "### 项目内容\n",
    "探索数据分布，缺失情况，针对性的进行缺失值填补，对于缺失较少的重要特征选择随机森林缺失填补法，使用3sigma、箱型图分析等对异常值进行处理，对分类型变量进行编码。\n",
    "\n",
    "使用方差过滤、F检验过滤掉一部分特征，进行WOE分箱，对每个特征分箱结果进行可视化，分析每个特征分箱情况并以此分析 用户行为偏好，使用各个特征的IV值进一步筛选特征。\n",
    "\n",
    "训练随机森林模型，模型调参、评估，输出模型，以此模型对用户流失进行预测，以便针对性地挽留用户。训练逻辑回归模型，通过其算法可解释性强的特点(特征系数)来对用户流失关键因素进行阐述。\n",
    "\n",
    "本次案例分析仅展示数据清洗、特征工程及建模（随机森林分类模型）部分。完整案例可参见原文。\n",
    "\n",
    "![p1.png](./picture/p1.png)\n",
    "\n",
    "  \n",
    "    \n",
    "**<font color = '#5172F0'><font size=3.5>更多资源👇👇👇</font>**   \n",
    "    \n",
    "如果需要获得与本案例更多的资源，可以微信搜索公众号「<font color ='#F77802'>数据STUDIO</font>」关注，或者点击下方文章链接查看！\n",
    "\n",
    "- [分享一个能够写在简历里的企业级数据挖掘实战项目](https://mp.weixin.qq.com/s/X4b0pTrv8_6WItM1ZmHyKg)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**<font color = '#5172F0'><font size=3.5>注意事项👇👇👇</font>**  \n",
    "    \n",
    "**注意1**：为了尽可能还原一次真实的数据分析项目，在食用本notebook时，可能会出现我们没有提示（解决方案）的报错，你应学会如何自行解决！\n",
    "\n",
    "**注意2**：由于本案例后半部分涉及内容大多为机器学习相关，因此将不做习题使用，提供用于pandas操作练习的部分仅到20题为止！\n",
    "   \n",
    "**注意3**：为了尽可能让大家理解题意，我将保留每一题的运行结果，该结果仅供参考，只要完成题目要求，在样式和文字上无需保持一致！"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 初始化\n",
    "\n",
    "<br>\n",
    "\n",
    "该 `Notebook` 版本为**纯习题版**\n",
    "\n",
    "如果需要答案或者提示，可以微信搜索公众号「早起Python」获取！"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据导入与探索性分析"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "W1hcMkbFQypB"
   },
   "source": [
    "### 导入依赖包\n",
    "\n",
    "执行以下代码来导入本项目使用到的相关库\n",
    "\n",
    "**如果有任何导入相关的错误，大概率是因为你没有安装，根据报错提示使用 pip 安装即可。**\n",
    "\n",
    "**导入库相关的问题不应在知识星球或者微信群进行提问！**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "from time import time\n",
    "import datetime # 计时器\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.feature_selection import f_classif\n",
    "from sklearn.ensemble import RandomForestClassifier as RFC\n",
    "from sklearn.feature_selection import SelectFromModel\n",
    "from sklearn.model_selection import cross_val_score\n",
    "from sklearn.feature_selection import VarianceThreshold\n",
    "%matplotlib inline\n",
    "\n",
    "plt.rcParams['font.family'] = ['Arial Unicode MS']#显示中文,解决图中无法显示中文的问题\n",
    "plt.rcParams['axes.unicode_minus']=False"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1 -  导入数据\n",
    "\n",
    "导入当前目录下 `userlostprob.txt`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2 - 数据查看"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "查看数据前几行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3 - 数据查看"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "查看数据尾部5行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4 - 数据抽样"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "随机查看 5 条数据样本"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5 - 数据查看\n",
    "\n",
    "\n",
    "查看数据形状"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(689945, 51)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 6 - 数据检查"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "检查数据类型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 7 - 数据查看\n",
    "\n",
    "查看数据基本信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 8 - 数据查看\n",
    "\n",
    "查看数据的其他的一些信息（列索引与数据大小）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "35187195"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 9 - 数据统计\n",
    "\n",
    "查看数据的描述性统计"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 10 - 数据统计\n",
    "\n",
    "按照行计算平均值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据清洗\n",
    "数据清洗主要包括去除重复值、处理缺失值、处理异常值、⽣成衍生变量等操作。其中处理顺序根据实际处理过程涉及的问题而定，这里的顺序仅供参考。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 11 - 处理重复值\n",
    "\n",
    "对于一般模型影响不大，但对于回归模型⽽言，容易导致回归系数标准误降低，使得对应p值减⼩。重复值过多，样本随机误差降低，造成参数的贡献程度会被高估。本案例没有重复值，可以略过。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(689945, 51)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 12 - 缺失值查看"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**查看缺失值比例，并排序**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 13 - 数据可视化\n",
    "使用密度图可视化数据缺失比"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='缺失比', ylabel='Density'>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 14 - 数据可视化\n",
    "\n",
    "使用条形图可视化缺失值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 15 - 修改索引\n",
    "\n",
    "将 null 的索引设置为 特征，列名为缺失比"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>缺失比</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>特征</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>label</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sid</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>iforderpv_24h</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>h</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sampleid</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>arrival</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>hotelcr</th>\n",
       "      <td>0.001155</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>hoteluv</th>\n",
       "      <td>0.001155</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>lowestprice</th>\n",
       "      <td>0.002919</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>cityuvs</th>\n",
       "      <td>0.011118</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>cancelrate</th>\n",
       "      <td>0.016984</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>novoters</th>\n",
       "      <td>0.024679</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>customereval_pre2</th>\n",
       "      <td>0.041500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>landhalfhours</th>\n",
       "      <td>0.041500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>uv_pre2</th>\n",
       "      <td>0.041679</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>lowestprice_pre2</th>\n",
       "      <td>0.042440</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>uv_pre</th>\n",
       "      <td>0.042608</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>cr_pre</th>\n",
       "      <td>0.042608</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>lowestprice_pre</th>\n",
       "      <td>0.043853</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>novoters_pre2</th>\n",
       "      <td>0.046857</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>cancelrate_pre</th>\n",
       "      <td>0.053526</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>cityorders</th>\n",
       "      <td>0.056065</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>novoters_pre</th>\n",
       "      <td>0.059409</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>commentnums_pre2</th>\n",
       "      <td>0.060132</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>commentnums</th>\n",
       "      <td>0.098437</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>businessrate_pre2</th>\n",
       "      <td>0.126075</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>commentnums_pre</th>\n",
       "      <td>0.132731</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>visitnum_oneyear</th>\n",
       "      <td>0.140642</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>lastpvgap</th>\n",
       "      <td>0.140775</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>deltaprice_pre2_t1</th>\n",
       "      <td>0.212720</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>businessrate_pre</th>\n",
       "      <td>0.298646</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>starprefer</th>\n",
       "      <td>0.326190</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>price_sensitive</th>\n",
       "      <td>0.327719</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>consuming_capacity</th>\n",
       "      <td>0.327719</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>cr</th>\n",
       "      <td>0.336330</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>avgprice</th>\n",
       "      <td>0.337250</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ordernum_oneyear</th>\n",
       "      <td>0.350918</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>lasthtlordergap</th>\n",
       "      <td>0.350918</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ordercanncelednum</th>\n",
       "      <td>0.350918</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ordercanceledprecent</th>\n",
       "      <td>0.350918</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ctrip_profits</th>\n",
       "      <td>0.354750</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>customer_value_profit</th>\n",
       "      <td>0.363539</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>delta_price2</th>\n",
       "      <td>0.365529</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>delta_price1</th>\n",
       "      <td>0.366405</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>historyvisit_avghotelnum</th>\n",
       "      <td>0.437816</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>historyvisit_totalordernum</th>\n",
       "      <td>0.439774</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>decisionhabit_user</th>\n",
       "      <td>0.441332</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>firstorder_bu</th>\n",
       "      <td>0.453590</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>historyvisit_visit_detailpagenum</th>\n",
       "      <td>0.554698</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>historyvisit_7ordernum</th>\n",
       "      <td>0.879824</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                       缺失比\n",
       "特征                                        \n",
       "label                             0.000000\n",
       "sid                               0.000000\n",
       "iforderpv_24h                     0.000000\n",
       "h                                 0.000000\n",
       "d                                 0.000000\n",
       "sampleid                          0.000000\n",
       "arrival                           0.000000\n",
       "hotelcr                           0.001155\n",
       "hoteluv                           0.001155\n",
       "lowestprice                       0.002919\n",
       "cityuvs                           0.011118\n",
       "cancelrate                        0.016984\n",
       "novoters                          0.024679\n",
       "customereval_pre2                 0.041500\n",
       "landhalfhours                     0.041500\n",
       "uv_pre2                           0.041679\n",
       "lowestprice_pre2                  0.042440\n",
       "uv_pre                            0.042608\n",
       "cr_pre                            0.042608\n",
       "lowestprice_pre                   0.043853\n",
       "novoters_pre2                     0.046857\n",
       "cancelrate_pre                    0.053526\n",
       "cityorders                        0.056065\n",
       "novoters_pre                      0.059409\n",
       "commentnums_pre2                  0.060132\n",
       "commentnums                       0.098437\n",
       "businessrate_pre2                 0.126075\n",
       "commentnums_pre                   0.132731\n",
       "visitnum_oneyear                  0.140642\n",
       "lastpvgap                         0.140775\n",
       "deltaprice_pre2_t1                0.212720\n",
       "businessrate_pre                  0.298646\n",
       "starprefer                        0.326190\n",
       "price_sensitive                   0.327719\n",
       "consuming_capacity                0.327719\n",
       "cr                                0.336330\n",
       "avgprice                          0.337250\n",
       "ordernum_oneyear                  0.350918\n",
       "lasthtlordergap                   0.350918\n",
       "ordercanncelednum                 0.350918\n",
       "ordercanceledprecent              0.350918\n",
       "ctrip_profits                     0.354750\n",
       "customer_value_profit             0.363539\n",
       "delta_price2                      0.365529\n",
       "delta_price1                      0.366405\n",
       "historyvisit_avghotelnum          0.437816\n",
       "historyvisit_totalordernum        0.439774\n",
       "decisionhabit_user                0.441332\n",
       "firstorder_bu                     0.453590\n",
       "historyvisit_visit_detailpagenum  0.554698\n",
       "historyvisit_7ordernum            0.879824"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 16 - 数据删除\n",
    "\n",
    "\n",
    "**删除缺失比例为0.879824**的列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 17 - 异常值处理\n",
    "\n",
    "首先处理异常值，最低酒店定价有小于0的，有等于1的值，明显属于异常值。异常值处理方法较多，常见有直接删除，当缺失值处理等等\n",
    "\n",
    "本例中，我们用盖帽法处理此异常值。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>unique</th>\n",
       "      <th>top</th>\n",
       "      <th>freq</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>1%</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>99%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>label</th>\n",
       "      <td>689945</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.274452</td>\n",
       "      <td>0.446238</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sampleid</th>\n",
       "      <td>689945</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>628540</td>\n",
       "      <td>414681</td>\n",
       "      <td>24636</td>\n",
       "      <td>36205.9</td>\n",
       "      <td>312320</td>\n",
       "      <td>599637</td>\n",
       "      <td>887460</td>\n",
       "      <td>2.22689e+06</td>\n",
       "      <td>2.23843e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d</th>\n",
       "      <td>689945</td>\n",
       "      <td>7</td>\n",
       "      <td>2016-05-20</td>\n",
       "      <td>111985</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>arrival</th>\n",
       "      <td>689945</td>\n",
       "      <td>37</td>\n",
       "      <td>2016-05-20</td>\n",
       "      <td>110982</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>iforderpv_24h</th>\n",
       "      <td>689945</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.193737</td>\n",
       "      <td>0.395226</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>decisionhabit_user</th>\n",
       "      <td>385450</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.31705</td>\n",
       "      <td>38.5245</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>27</td>\n",
       "      <td>3167</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>historyvisit_totalordernum</th>\n",
       "      <td>386525</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>11.7105</td>\n",
       "      <td>17.2514</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>14</td>\n",
       "      <td>82</td>\n",
       "      <td>711</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>hotelcr</th>\n",
       "      <td>689148</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.061</td>\n",
       "      <td>0.0452643</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1.03</td>\n",
       "      <td>1.05</td>\n",
       "      <td>1.09</td>\n",
       "      <td>1.19</td>\n",
       "      <td>3.18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ordercanceledprecent</th>\n",
       "      <td>447831</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.342119</td>\n",
       "      <td>0.35421</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.25</td>\n",
       "      <td>0.57</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>landhalfhours</th>\n",
       "      <td>661312</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.08637</td>\n",
       "      <td>12.4132</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>48</td>\n",
       "      <td>49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ordercanncelednum</th>\n",
       "      <td>447831</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>154.179</td>\n",
       "      <td>398.457</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>153</td>\n",
       "      <td>1752</td>\n",
       "      <td>13475</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>commentnums</th>\n",
       "      <td>622029</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1272.09</td>\n",
       "      <td>2101.87</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>115</td>\n",
       "      <td>514</td>\n",
       "      <td>1670</td>\n",
       "      <td>8796</td>\n",
       "      <td>34189</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>starprefer</th>\n",
       "      <td>464892</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>67.5323</td>\n",
       "      <td>19.1751</td>\n",
       "      <td>0</td>\n",
       "      <td>20</td>\n",
       "      <td>53.3</td>\n",
       "      <td>69.4</td>\n",
       "      <td>80.3</td>\n",
       "      <td>100</td>\n",
       "      <td>100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>novoters</th>\n",
       "      <td>672918</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1706.25</td>\n",
       "      <td>2811.69</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>157</td>\n",
       "      <td>692</td>\n",
       "      <td>2196</td>\n",
       "      <td>11576</td>\n",
       "      <td>45455</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>consuming_capacity</th>\n",
       "      <td>463837</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>39.1541</td>\n",
       "      <td>23.2401</td>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "      <td>22</td>\n",
       "      <td>33</td>\n",
       "      <td>51</td>\n",
       "      <td>100</td>\n",
       "      <td>100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>historyvisit_avghotelnum</th>\n",
       "      <td>387876</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.51018</td>\n",
       "      <td>41.0453</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>7</td>\n",
       "      <td>29</td>\n",
       "      <td>3167</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>cancelrate</th>\n",
       "      <td>678227</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1051.6</td>\n",
       "      <td>1509.07</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>137</td>\n",
       "      <td>503</td>\n",
       "      <td>1373</td>\n",
       "      <td>6399</td>\n",
       "      <td>18930</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>historyvisit_visit_detailpagenum</th>\n",
       "      <td>307234</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>37.1536</td>\n",
       "      <td>73.4029</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>18</td>\n",
       "      <td>44</td>\n",
       "      <td>262</td>\n",
       "      <td>6199</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>delta_price1</th>\n",
       "      <td>437146</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>79.067</td>\n",
       "      <td>512.943</td>\n",
       "      <td>-99879</td>\n",
       "      <td>-1227.55</td>\n",
       "      <td>-31</td>\n",
       "      <td>81</td>\n",
       "      <td>226</td>\n",
       "      <td>1081</td>\n",
       "      <td>5398</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>price_sensitive</th>\n",
       "      <td>463837</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>24.6459</td>\n",
       "      <td>26.6856</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>16</td>\n",
       "      <td>33</td>\n",
       "      <td>100</td>\n",
       "      <td>100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>hoteluv</th>\n",
       "      <td>689148</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>95.0927</td>\n",
       "      <td>169.982</td>\n",
       "      <td>0.007</td>\n",
       "      <td>0.167</td>\n",
       "      <td>10.427</td>\n",
       "      <td>36.18</td>\n",
       "      <td>107.747</td>\n",
       "      <td>964.113</td>\n",
       "      <td>1722.61</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>businessrate_pre</th>\n",
       "      <td>483896</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.372717</td>\n",
       "      <td>0.232791</td>\n",
       "      <td>0</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.15</td>\n",
       "      <td>0.39</td>\n",
       "      <td>0.57</td>\n",
       "      <td>0.8</td>\n",
       "      <td>0.99</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ordernum_oneyear</th>\n",
       "      <td>447831</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>11.6421</td>\n",
       "      <td>17.1372</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>14</td>\n",
       "      <td>81</td>\n",
       "      <td>711</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>cr_pre</th>\n",
       "      <td>660548</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.06291</td>\n",
       "      <td>0.0445878</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1.03</td>\n",
       "      <td>1.06</td>\n",
       "      <td>1.09</td>\n",
       "      <td>1.19</td>\n",
       "      <td>2.95</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>avgprice</th>\n",
       "      <td>457261</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>422.459</td>\n",
       "      <td>290.853</td>\n",
       "      <td>1</td>\n",
       "      <td>91</td>\n",
       "      <td>232</td>\n",
       "      <td>350</td>\n",
       "      <td>524</td>\n",
       "      <td>1491</td>\n",
       "      <td>6383</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>lowestprice</th>\n",
       "      <td>687931</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>318.806</td>\n",
       "      <td>575.782</td>\n",
       "      <td>-3</td>\n",
       "      <td>37</td>\n",
       "      <td>116</td>\n",
       "      <td>200</td>\n",
       "      <td>380</td>\n",
       "      <td>1823</td>\n",
       "      <td>100000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>firstorder_bu</th>\n",
       "      <td>376993</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>11.6978</td>\n",
       "      <td>2.74682</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>12</td>\n",
       "      <td>13</td>\n",
       "      <td>13</td>\n",
       "      <td>17</td>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>customereval_pre2</th>\n",
       "      <td>661312</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.04852</td>\n",
       "      <td>1.22664</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>5.5</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>delta_price2</th>\n",
       "      <td>437750</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>77.2772</td>\n",
       "      <td>391.414</td>\n",
       "      <td>-43344</td>\n",
       "      <td>-949</td>\n",
       "      <td>-29</td>\n",
       "      <td>69</td>\n",
       "      <td>198</td>\n",
       "      <td>1018</td>\n",
       "      <td>5114</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>commentnums_pre</th>\n",
       "      <td>598368</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1415.16</td>\n",
       "      <td>2329.42</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>137</td>\n",
       "      <td>592</td>\n",
       "      <td>1862</td>\n",
       "      <td>9732</td>\n",
       "      <td>34189</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>customer_value_profit</th>\n",
       "      <td>439123</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.03841</td>\n",
       "      <td>6.62528</td>\n",
       "      <td>-24.075</td>\n",
       "      <td>-0.29678</td>\n",
       "      <td>0.269</td>\n",
       "      <td>0.991</td>\n",
       "      <td>3.138</td>\n",
       "      <td>28.451</td>\n",
       "      <td>598.064</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>commentnums_pre2</th>\n",
       "      <td>648457</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1313.39</td>\n",
       "      <td>1719.51</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>270</td>\n",
       "      <td>768</td>\n",
       "      <td>1780</td>\n",
       "      <td>7457</td>\n",
       "      <td>34189</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>cancelrate_pre</th>\n",
       "      <td>653015</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.344422</td>\n",
       "      <td>0.179147</td>\n",
       "      <td>0</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.23</td>\n",
       "      <td>0.32</td>\n",
       "      <td>0.42</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>novoters_pre2</th>\n",
       "      <td>657616</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1787.2</td>\n",
       "      <td>2316.71</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>391</td>\n",
       "      <td>1054</td>\n",
       "      <td>2413</td>\n",
       "      <td>10018</td>\n",
       "      <td>45436</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>novoters_pre</th>\n",
       "      <td>648956</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1890.7</td>\n",
       "      <td>3116.12</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>187</td>\n",
       "      <td>783</td>\n",
       "      <td>2453</td>\n",
       "      <td>13839</td>\n",
       "      <td>45436</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ctrip_profits</th>\n",
       "      <td>445187</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4.20849</td>\n",
       "      <td>9.31444</td>\n",
       "      <td>-44.313</td>\n",
       "      <td>-0.393</td>\n",
       "      <td>0.34</td>\n",
       "      <td>1.347</td>\n",
       "      <td>4.32</td>\n",
       "      <td>40.7558</td>\n",
       "      <td>600.82</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>deltaprice_pre2_t1</th>\n",
       "      <td>543180</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.28374</td>\n",
       "      <td>48.8059</td>\n",
       "      <td>-2296</td>\n",
       "      <td>-103</td>\n",
       "      <td>-3</td>\n",
       "      <td>2</td>\n",
       "      <td>10</td>\n",
       "      <td>111</td>\n",
       "      <td>3324</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>lowestprice_pre</th>\n",
       "      <td>659689</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>315.955</td>\n",
       "      <td>463.724</td>\n",
       "      <td>1</td>\n",
       "      <td>38</td>\n",
       "      <td>118</td>\n",
       "      <td>208</td>\n",
       "      <td>385</td>\n",
       "      <td>1750</td>\n",
       "      <td>100000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>uv_pre</th>\n",
       "      <td>660548</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>107.846</td>\n",
       "      <td>186.732</td>\n",
       "      <td>0.007</td>\n",
       "      <td>0.24</td>\n",
       "      <td>12.533</td>\n",
       "      <td>42.5</td>\n",
       "      <td>124.707</td>\n",
       "      <td>1047.79</td>\n",
       "      <td>1722.61</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>uv_pre2</th>\n",
       "      <td>661189</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>103.353</td>\n",
       "      <td>157.118</td>\n",
       "      <td>0.007</td>\n",
       "      <td>0.5</td>\n",
       "      <td>17.563</td>\n",
       "      <td>51.287</td>\n",
       "      <td>126.2</td>\n",
       "      <td>856.725</td>\n",
       "      <td>1722.61</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>lowestprice_pre2</th>\n",
       "      <td>660664</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>318.542</td>\n",
       "      <td>351.913</td>\n",
       "      <td>1</td>\n",
       "      <td>52</td>\n",
       "      <td>145</td>\n",
       "      <td>233</td>\n",
       "      <td>388</td>\n",
       "      <td>1464</td>\n",
       "      <td>43700</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>lasthtlordergap</th>\n",
       "      <td>447831</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>101831</td>\n",
       "      <td>122784</td>\n",
       "      <td>0</td>\n",
       "      <td>244</td>\n",
       "      <td>14999</td>\n",
       "      <td>46890</td>\n",
       "      <td>138953</td>\n",
       "      <td>484734</td>\n",
       "      <td>527026</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>businessrate_pre2</th>\n",
       "      <td>602960</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.368237</td>\n",
       "      <td>0.219945</td>\n",
       "      <td>0</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.17</td>\n",
       "      <td>0.4</td>\n",
       "      <td>0.55</td>\n",
       "      <td>0.78</td>\n",
       "      <td>0.99</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>cityuvs</th>\n",
       "      <td>682274</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10.6483</td>\n",
       "      <td>15.6967</td>\n",
       "      <td>0.007</td>\n",
       "      <td>0.013</td>\n",
       "      <td>0.827</td>\n",
       "      <td>3.527</td>\n",
       "      <td>13.327</td>\n",
       "      <td>66.007</td>\n",
       "      <td>67.14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>cityorders</th>\n",
       "      <td>651263</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.25325</td>\n",
       "      <td>3.53845</td>\n",
       "      <td>0.007</td>\n",
       "      <td>0.007</td>\n",
       "      <td>0.127</td>\n",
       "      <td>0.627</td>\n",
       "      <td>2.747</td>\n",
       "      <td>14.453</td>\n",
       "      <td>14.507</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>lastpvgap</th>\n",
       "      <td>592818</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>12049.4</td>\n",
       "      <td>25601.4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>551</td>\n",
       "      <td>2848</td>\n",
       "      <td>10726</td>\n",
       "      <td>138722</td>\n",
       "      <td>194386</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>cr</th>\n",
       "      <td>457896</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.13748</td>\n",
       "      <td>0.204789</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1.05</td>\n",
       "      <td>1.21</td>\n",
       "      <td>2</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sid</th>\n",
       "      <td>689945</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>153.702</td>\n",
       "      <td>277.808</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>17</td>\n",
       "      <td>62</td>\n",
       "      <td>180</td>\n",
       "      <td>1212</td>\n",
       "      <td>9956</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>visitnum_oneyear</th>\n",
       "      <td>592910</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>18551.8</td>\n",
       "      <td>228860</td>\n",
       "      <td>1</td>\n",
       "      <td>21</td>\n",
       "      <td>471</td>\n",
       "      <td>1315</td>\n",
       "      <td>3141</td>\n",
       "      <td>262567</td>\n",
       "      <td>9.65119e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>h</th>\n",
       "      <td>689945</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>14.4623</td>\n",
       "      <td>6.30158</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>20</td>\n",
       "      <td>23</td>\n",
       "      <td>23</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                   count unique         top    freq      mean  \\\n",
       "label                             689945    NaN         NaN     NaN  0.274452   \n",
       "sampleid                          689945    NaN         NaN     NaN    628540   \n",
       "d                                 689945      7  2016-05-20  111985       NaN   \n",
       "arrival                           689945     37  2016-05-20  110982       NaN   \n",
       "iforderpv_24h                     689945    NaN         NaN     NaN  0.193737   \n",
       "decisionhabit_user                385450    NaN         NaN     NaN   5.31705   \n",
       "historyvisit_totalordernum        386525    NaN         NaN     NaN   11.7105   \n",
       "hotelcr                           689148    NaN         NaN     NaN     1.061   \n",
       "ordercanceledprecent              447831    NaN         NaN     NaN  0.342119   \n",
       "landhalfhours                     661312    NaN         NaN     NaN   6.08637   \n",
       "ordercanncelednum                 447831    NaN         NaN     NaN   154.179   \n",
       "commentnums                       622029    NaN         NaN     NaN   1272.09   \n",
       "starprefer                        464892    NaN         NaN     NaN   67.5323   \n",
       "novoters                          672918    NaN         NaN     NaN   1706.25   \n",
       "consuming_capacity                463837    NaN         NaN     NaN   39.1541   \n",
       "historyvisit_avghotelnum          387876    NaN         NaN     NaN   6.51018   \n",
       "cancelrate                        678227    NaN         NaN     NaN    1051.6   \n",
       "historyvisit_visit_detailpagenum  307234    NaN         NaN     NaN   37.1536   \n",
       "delta_price1                      437146    NaN         NaN     NaN    79.067   \n",
       "price_sensitive                   463837    NaN         NaN     NaN   24.6459   \n",
       "hoteluv                           689148    NaN         NaN     NaN   95.0927   \n",
       "businessrate_pre                  483896    NaN         NaN     NaN  0.372717   \n",
       "ordernum_oneyear                  447831    NaN         NaN     NaN   11.6421   \n",
       "cr_pre                            660548    NaN         NaN     NaN   1.06291   \n",
       "avgprice                          457261    NaN         NaN     NaN   422.459   \n",
       "lowestprice                       687931    NaN         NaN     NaN   318.806   \n",
       "firstorder_bu                     376993    NaN         NaN     NaN   11.6978   \n",
       "customereval_pre2                 661312    NaN         NaN     NaN   3.04852   \n",
       "delta_price2                      437750    NaN         NaN     NaN   77.2772   \n",
       "commentnums_pre                   598368    NaN         NaN     NaN   1415.16   \n",
       "customer_value_profit             439123    NaN         NaN     NaN   3.03841   \n",
       "commentnums_pre2                  648457    NaN         NaN     NaN   1313.39   \n",
       "cancelrate_pre                    653015    NaN         NaN     NaN  0.344422   \n",
       "novoters_pre2                     657616    NaN         NaN     NaN    1787.2   \n",
       "novoters_pre                      648956    NaN         NaN     NaN    1890.7   \n",
       "ctrip_profits                     445187    NaN         NaN     NaN   4.20849   \n",
       "deltaprice_pre2_t1                543180    NaN         NaN     NaN   3.28374   \n",
       "lowestprice_pre                   659689    NaN         NaN     NaN   315.955   \n",
       "uv_pre                            660548    NaN         NaN     NaN   107.846   \n",
       "uv_pre2                           661189    NaN         NaN     NaN   103.353   \n",
       "lowestprice_pre2                  660664    NaN         NaN     NaN   318.542   \n",
       "lasthtlordergap                   447831    NaN         NaN     NaN    101831   \n",
       "businessrate_pre2                 602960    NaN         NaN     NaN  0.368237   \n",
       "cityuvs                           682274    NaN         NaN     NaN   10.6483   \n",
       "cityorders                        651263    NaN         NaN     NaN   2.25325   \n",
       "lastpvgap                         592818    NaN         NaN     NaN   12049.4   \n",
       "cr                                457896    NaN         NaN     NaN   1.13748   \n",
       "sid                               689945    NaN         NaN     NaN   153.702   \n",
       "visitnum_oneyear                  592910    NaN         NaN     NaN   18551.8   \n",
       "h                                 689945    NaN         NaN     NaN   14.4623   \n",
       "\n",
       "                                        std     min       1%     25%     50%  \\\n",
       "label                              0.446238       0        0       0       0   \n",
       "sampleid                             414681   24636  36205.9  312320  599637   \n",
       "d                                       NaN     NaN      NaN     NaN     NaN   \n",
       "arrival                                 NaN     NaN      NaN     NaN     NaN   \n",
       "iforderpv_24h                      0.395226       0        0       0       0   \n",
       "decisionhabit_user                  38.5245       0        1       2       3   \n",
       "historyvisit_totalordernum          17.2514       1        1       2       6   \n",
       "hotelcr                           0.0452643       1        1    1.03    1.05   \n",
       "ordercanceledprecent                0.35421       0        0       0    0.25   \n",
       "landhalfhours                       12.4132       0        0       0       0   \n",
       "ordercanncelednum                   398.457       0        0       0       2   \n",
       "commentnums                         2101.87       0        1     115     514   \n",
       "starprefer                          19.1751       0       20    53.3    69.4   \n",
       "novoters                            2811.69       1        1     157     692   \n",
       "consuming_capacity                  23.2401       0        8      22      33   \n",
       "historyvisit_avghotelnum            41.0453       0        1       2       4   \n",
       "cancelrate                          1509.07       1        2     137     503   \n",
       "historyvisit_visit_detailpagenum    73.4029       1        1       6      18   \n",
       "delta_price1                        512.943  -99879 -1227.55     -31      81   \n",
       "price_sensitive                     26.6856       0        0       5      16   \n",
       "hoteluv                             169.982   0.007    0.167  10.427   36.18   \n",
       "businessrate_pre                   0.232791       0     0.01    0.15    0.39   \n",
       "ordernum_oneyear                    17.1372       1        1       2       6   \n",
       "cr_pre                            0.0445878       1        1    1.03    1.06   \n",
       "avgprice                            290.853       1       91     232     350   \n",
       "lowestprice                         575.782      -3       37     116     200   \n",
       "firstorder_bu                       2.74682       1        3      12      13   \n",
       "customereval_pre2                   1.22664       0        0       2       3   \n",
       "delta_price2                        391.414  -43344     -949     -29      69   \n",
       "commentnums_pre                     2329.42       0        1     137     592   \n",
       "customer_value_profit               6.62528 -24.075 -0.29678   0.269   0.991   \n",
       "commentnums_pre2                    1719.51       0        3     270     768   \n",
       "cancelrate_pre                     0.179147       0     0.05    0.23    0.32   \n",
       "novoters_pre2                       2316.71       1        5     391    1054   \n",
       "novoters_pre                        3116.12       1        2     187     783   \n",
       "ctrip_profits                       9.31444 -44.313   -0.393    0.34   1.347   \n",
       "deltaprice_pre2_t1                  48.8059   -2296     -103      -3       2   \n",
       "lowestprice_pre                     463.724       1       38     118     208   \n",
       "uv_pre                              186.732   0.007     0.24  12.533    42.5   \n",
       "uv_pre2                             157.118   0.007      0.5  17.563  51.287   \n",
       "lowestprice_pre2                    351.913       1       52     145     233   \n",
       "lasthtlordergap                      122784       0      244   14999   46890   \n",
       "businessrate_pre2                  0.219945       0     0.01    0.17     0.4   \n",
       "cityuvs                             15.6967   0.007    0.013   0.827   3.527   \n",
       "cityorders                          3.53845   0.007    0.007   0.127   0.627   \n",
       "lastpvgap                           25601.4       0        0     551    2848   \n",
       "cr                                 0.204789       1        1       1    1.05   \n",
       "sid                                 277.808       0        1      17      62   \n",
       "visitnum_oneyear                     228860       1       21     471    1315   \n",
       "h                                   6.30158       0        0      11      15   \n",
       "\n",
       "                                      75%          99%          max  \n",
       "label                                   1            1            1  \n",
       "sampleid                           887460  2.22689e+06  2.23843e+06  \n",
       "d                                     NaN          NaN          NaN  \n",
       "arrival                               NaN          NaN          NaN  \n",
       "iforderpv_24h                           0            1            1  \n",
       "decisionhabit_user                      5           27         3167  \n",
       "historyvisit_totalordernum             14           82          711  \n",
       "hotelcr                              1.09         1.19         3.18  \n",
       "ordercanceledprecent                 0.57            1            1  \n",
       "landhalfhours                           4           48           49  \n",
       "ordercanncelednum                     153         1752        13475  \n",
       "commentnums                          1670         8796        34189  \n",
       "starprefer                           80.3          100          100  \n",
       "novoters                             2196        11576        45455  \n",
       "consuming_capacity                     51          100          100  \n",
       "historyvisit_avghotelnum                7           29         3167  \n",
       "cancelrate                           1373         6399        18930  \n",
       "historyvisit_visit_detailpagenum       44          262         6199  \n",
       "delta_price1                          226         1081         5398  \n",
       "price_sensitive                        33          100          100  \n",
       "hoteluv                           107.747      964.113      1722.61  \n",
       "businessrate_pre                     0.57          0.8         0.99  \n",
       "ordernum_oneyear                       14           81          711  \n",
       "cr_pre                               1.09         1.19         2.95  \n",
       "avgprice                              524         1491         6383  \n",
       "lowestprice                           380         1823       100000  \n",
       "firstorder_bu                          13           17           21  \n",
       "customereval_pre2                       4          5.5            6  \n",
       "delta_price2                          198         1018         5114  \n",
       "commentnums_pre                      1862         9732        34189  \n",
       "customer_value_profit               3.138       28.451      598.064  \n",
       "commentnums_pre2                     1780         7457        34189  \n",
       "cancelrate_pre                       0.42            1            1  \n",
       "novoters_pre2                        2413        10018        45436  \n",
       "novoters_pre                         2453        13839        45436  \n",
       "ctrip_profits                        4.32      40.7558       600.82  \n",
       "deltaprice_pre2_t1                     10          111         3324  \n",
       "lowestprice_pre                       385         1750       100000  \n",
       "uv_pre                            124.707      1047.79      1722.61  \n",
       "uv_pre2                             126.2      856.725      1722.61  \n",
       "lowestprice_pre2                      388         1464        43700  \n",
       "lasthtlordergap                    138953       484734       527026  \n",
       "businessrate_pre2                    0.55         0.78         0.99  \n",
       "cityuvs                            13.327       66.007        67.14  \n",
       "cityorders                          2.747       14.453       14.507  \n",
       "lastpvgap                           10726       138722       194386  \n",
       "cr                                   1.21            2           11  \n",
       "sid                                   180         1212         9956  \n",
       "visitnum_oneyear                     3141       262567  9.65119e+06  \n",
       "h                                      20           23           23  "
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.describe([0.01,0.25,0.5,0.75,0.99],include='all').T"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**定义盖帽法处理异常值**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>1%</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>99%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>lowestprice</th>\n",
       "      <td>687931.0</td>\n",
       "      <td>318.806242</td>\n",
       "      <td>575.782415</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>37.0</td>\n",
       "      <td>116.0</td>\n",
       "      <td>200.0</td>\n",
       "      <td>380.0</td>\n",
       "      <td>1823.0</td>\n",
       "      <td>100000.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>lowestprice_pre</th>\n",
       "      <td>659689.0</td>\n",
       "      <td>315.954583</td>\n",
       "      <td>463.723643</td>\n",
       "      <td>1.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>118.0</td>\n",
       "      <td>208.0</td>\n",
       "      <td>385.0</td>\n",
       "      <td>1750.0</td>\n",
       "      <td>100000.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                    count        mean         std  min    1%    25%    50%  \\\n",
       "lowestprice      687931.0  318.806242  575.782415 -3.0  37.0  116.0  200.0   \n",
       "lowestprice_pre  659689.0  315.954583  463.723643  1.0  38.0  118.0  208.0   \n",
       "\n",
       "                   75%     99%       max  \n",
       "lowestprice      380.0  1823.0  100000.0  \n",
       "lowestprice_pre  385.0  1750.0  100000.0  "
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.loc[:,['lowestprice','lowestprice_pre']].describe([0.01,0.25,0.5,0.75,0.99],include='all').T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "col_01 = ['lowestprice','lowestprice_pre'] # 偏态严重"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "def block_lower(x):\n",
    "# x是输⼊入的Series对象,替换1%分位数\n",
    "    ql = x.quantile(.01)\n",
    "    out = x.mask(x<ql,ql)\n",
    "    return(out)\n",
    "\n",
    "def block_upper(x):\n",
    "# x是输⼊入的Series对象,l替换99%分位数\n",
    "    qu = x.quantile(.99)\n",
    "    out = x.mask(x>qu,qu)\n",
    "    return(out)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "data.loc[:,col_01]=data.loc[:,col_01].apply(block_upper)\n",
    "\n",
    "data.loc[:,col_01]=data.loc[:,col_01].apply(block_lower)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>1%</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>99%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>lowestprice</th>\n",
       "      <td>687931.0</td>\n",
       "      <td>305.025771</td>\n",
       "      <td>297.382838</td>\n",
       "      <td>37.0</td>\n",
       "      <td>37.0</td>\n",
       "      <td>116.0</td>\n",
       "      <td>200.0</td>\n",
       "      <td>380.0</td>\n",
       "      <td>1823.0</td>\n",
       "      <td>1823.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>lowestprice_pre</th>\n",
       "      <td>659689.0</td>\n",
       "      <td>304.439507</td>\n",
       "      <td>287.192512</td>\n",
       "      <td>38.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>118.0</td>\n",
       "      <td>208.0</td>\n",
       "      <td>385.0</td>\n",
       "      <td>1750.0</td>\n",
       "      <td>1750.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                    count        mean         std   min    1%    25%    50%  \\\n",
       "lowestprice      687931.0  305.025771  297.382838  37.0  37.0  116.0  200.0   \n",
       "lowestprice_pre  659689.0  304.439507  287.192512  38.0  38.0  118.0  208.0   \n",
       "\n",
       "                   75%     99%     max  \n",
       "lowestprice      380.0  1823.0  1823.0  \n",
       "lowestprice_pre  385.0  1750.0  1750.0  "
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.loc[:,['lowestprice','lowestprice_pre']].describe([0.01,0.25,0.5,0.75,0.99],include='all').T"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 18 - 数据划分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_copy = data.copy(deep=True) # 备份数据,deep=True是深拷贝，同浅拷贝有所不同，他不会因为备份数据改变而改变"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "运用切片选取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = data_copy.iloc[:,2:]\n",
    "y = data_copy.label"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "Xtrain,Xtest,Ytrain,Ytest = train_test_split(X,y,test_size=0.3,random_state=666)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 19 - 特征筛选"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "将不同类型的变量进行区别对待处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "cols = X.columns.to_list()\n",
    "col_no = ['sid','iforderpv_24h','h'] #没有缺失值的特征\n",
    "col_clf = ['decisionhabit_user'] # 分类型变量\n",
    "col_neg = ['delta_price1','delta_price2','customer_value_profit'\n",
    "           ,'ctrip_profits','deltaprice_pre2_t1'] # 含有负数\n",
    "col_35 = ['firstorder_bu','decisionhabit_user','historyvisit_totalordernum'\n",
    " ,'historyvisit_avghotelnum','customer_value_profit','ctrip_profits','ordernum_oneyear'\n",
    " ,'lasthtlordergap','ordercanceledprecent','ordercanncelednum'] # 缺失35% —— 55%"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "筛选方差大于100的列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "col_std = data.columns[data.describe(include='all').T['std'] >100].to_list() # std >100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "col_norm = list(set(cols)-set(col_clf + col_std + col_neg + col_no +col_35))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "通过remove删除列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "col_std.remove('delta_price1')\n",
    "col_std.remove('delta_price2')\n",
    "col_std.remove('sampleid')\n",
    "col_std.remove('lasthtlordergap')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 20 - 缺失值填补"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 分类型变量用 '众数填补' —— col_clf\n",
    "- 含有负数的特征用 '中值填补' —— col_neg\n",
    "- std > 100 方差大于100的连续型变量用 '中值填补' —— col_std\n",
    "- 缺失35%——55%用 '常数 -1 填充' 单独做一类\n",
    "- 其余变量用 '均值填补' —— col_norm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/opt/anaconda3/lib/python3.8/site-packages/pandas/core/indexing.py:1717: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  isetter(loc, v)\n"
     ]
    }
   ],
   "source": [
    "Xtrain.loc[:,col_clf] = Xtrain.loc[:,col_clf].fillna(Xtrain.loc[:,col_clf].mode())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "Xtrain.loc[:,col_neg] = Xtrain.loc[:,col_neg].fillna(Xtrain.loc[:,col_neg].median())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "Xtrain.loc[:,col_std] = Xtrain.loc[:,col_std].fillna(Xtrain.loc[:,col_std].median())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "Xtrain.loc[:,col_norm] = Xtrain.loc[:,col_norm].fillna(Xtrain.loc[:,col_norm].mean())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "Xtrain.loc[:,col_35] = Xtrain.loc[:,col_35].fillna(-1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**检查缺失值填补情况**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "查看训练集合的缺失值情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Xtrain.isna().any().sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "查看数据集合的缺失情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "43"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Xtest.isna().any().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 特征创造\n",
    "# ordernum_oneyear_train = Xtrain.loc[:,'ordernum_oneyear'].reset_index(drop=True)\n",
    "# ordernum_oneyear_test = Xtest.loc[:,'ordernum_oneyear'].reset_index(drop=True)\n",
    "# avgprice_train = Xtrain.loc[:,'avgprice'].reset_index(drop=True)\n",
    "# avgprice_test = Xtest.loc[:,'avgprice'].reset_index(drop=True)\n",
    "\n",
    "# M_train = ordernum_oneyear_train * avgprice_train\n",
    "\n",
    "# M_test = ordernum_oneyear_test * avgprice_test\n",
    "\n",
    "# M_train.to_csv('M_train.csv')\n",
    "# M_test.to_csv('M_test.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 特征选择"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "查看正负样本均衡与否"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    500588\n",
       "1    189357\n",
       "Name: label, dtype: int64"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y.value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 方差过滤"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "删除日期列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "Xtrain = Xtrain.drop(columns=['d', 'arrival'])\n",
    "Xtest = Xtest.drop(columns=['d', 'arrival'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "方差过滤"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "selector = VarianceThreshold()\n",
    "Xtrain_var0 = selector.fit(Xtrain).transform(Xtrain)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "过滤完后查看数据形状"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(482961, 46)"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Xtrain.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(482961, 46)"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Xtrain_var0.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### F_检验"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "F , pvalues_f = f_classif(Xtrain,Ytrain)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "查看F值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5.91193624e+03, 1.93995904e+00, 1.10748523e+04, 6.52588756e+03,\n",
       "       5.72616656e+03, 2.34402404e+02, 4.71035154e+03, 9.63228309e-01,\n",
       "       3.48993536e+01, 2.69161646e+00, 2.96230367e+02, 4.45001376e+00,\n",
       "       4.09092508e+01, 1.84634401e-01, 6.66912134e+02, 4.02901071e+00,\n",
       "       1.31726129e+03, 6.45113345e+03, 1.24045963e+04, 6.35625789e+03,\n",
       "       1.11075725e+02, 2.11018777e+03, 9.11616695e+02, 3.76655886e+02,\n",
       "       9.85304381e+02, 8.61980927e+00, 2.95985745e+03, 3.59246695e+01,\n",
       "       1.79738069e+02, 7.67313405e+00, 3.04910588e-02, 2.70403338e+03,\n",
       "       1.18798987e+01, 1.52209921e+03, 1.52800082e+03, 1.97523458e+03,\n",
       "       1.67256060e+03, 4.20295879e+02, 8.55081976e+03, 4.81856327e+03,\n",
       "       4.54167636e+03, 6.54280347e+01, 1.58147894e+04, 6.31860633e+01,\n",
       "       3.35011334e+02, 2.98914773e+03])"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "F"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "查看p值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.00000000e+000, 1.63673622e-001, 0.00000000e+000, 0.00000000e+000,\n",
       "       0.00000000e+000, 6.72579265e-053, 0.00000000e+000, 3.26375337e-001,\n",
       "       3.47427483e-009, 1.00878081e-001, 2.28516134e-066, 3.49014787e-002,\n",
       "       1.59609407e-010, 6.67420584e-001, 5.90640741e-147, 4.47247156e-002,\n",
       "       4.92139290e-288, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,\n",
       "       5.73245469e-026, 0.00000000e+000, 4.50308055e-200, 7.16278251e-084,\n",
       "       4.64497778e-216, 3.32542335e-003, 0.00000000e+000, 2.05240027e-009,\n",
       "       5.62279399e-041, 5.60511624e-003, 8.61380748e-001, 0.00000000e+000,\n",
       "       5.67478538e-004, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,\n",
       "       0.00000000e+000, 2.30633608e-093, 0.00000000e+000, 0.00000000e+000,\n",
       "       0.00000000e+000, 6.04130835e-016, 0.00000000e+000, 1.88475684e-015,\n",
       "       8.25479550e-075, 0.00000000e+000])"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pvalues_f"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**与标签没有显著相关性的变量有7个**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "7"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(pvalues_f>0.01).sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**剔除没有相关性的变量**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['iforderpv_24h',\n",
       " 'historyvisit_totalordernum',\n",
       " 'hotelcr',\n",
       " 'ordercanceledprecent',\n",
       " 'landhalfhours',\n",
       " 'ordercanncelednum',\n",
       " 'starprefer',\n",
       " 'consuming_capacity',\n",
       " 'cancelrate',\n",
       " 'delta_price1',\n",
       " 'hoteluv',\n",
       " 'businessrate_pre',\n",
       " 'ordernum_oneyear',\n",
       " 'cr_pre',\n",
       " 'avgprice',\n",
       " 'lowestprice',\n",
       " 'firstorder_bu',\n",
       " 'customereval_pre2',\n",
       " 'delta_price2',\n",
       " 'commentnums_pre',\n",
       " 'customer_value_profit',\n",
       " 'commentnums_pre2',\n",
       " 'cancelrate_pre',\n",
       " 'novoters_pre2',\n",
       " 'ctrip_profits',\n",
       " 'deltaprice_pre2_t1',\n",
       " 'lowestprice_pre',\n",
       " 'uv_pre',\n",
       " 'uv_pre2',\n",
       " 'lowestprice_pre2',\n",
       " 'lasthtlordergap',\n",
       " 'businessrate_pre2',\n",
       " 'cityuvs',\n",
       " 'cityorders',\n",
       " 'lastpvgap',\n",
       " 'cr',\n",
       " 'sid',\n",
       " 'visitnum_oneyear',\n",
       " 'h']"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "col_f = list(Xtrain.columns[pvalues_f<0.01])\n",
    "col_f"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "Xtrain = Xtrain.loc[:,col_f] # 通过切片筛选所需要的数据\n",
    "Xtest = Xtest.loc[:,col_f]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "重置索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [],
   "source": [
    "Xtrain.index = range(Xtrain.shape[0]) # 重置索引\n",
    "Ytrain = Ytrain.reset_index(drop=True)\n",
    "Xtest.index = range(Xtest.shape[0]) # 重置索引\n",
    "\n",
    "Ytest = Ytest.reset_index(drop=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 嵌入法筛选特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/opt/anaconda3/lib/python3.8/site-packages/sklearn/feature_selection/_base.py:79: UserWarning: No features were selected: either the data is too noisy or the selection test too strict.\n",
      "  warn(\"No features were selected: either the data is\"\n"
     ]
    }
   ],
   "source": [
    "# 初步探索\n",
    "RFC_clf = RFC(n_estimators=10,random_state=0)\n",
    "X_embedded = SelectFromModel(RFC_clf,threshold=0.05).fit_transform(Xtrain,Ytrain)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**利用随机森林调出特征重要性**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "importance = RFC_clf.fit(Xtrain,Ytrain).feature_importances_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "同样，结束后查看下数据的形状"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(482961, 39)"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Xtrain.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(482961,)"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Ytrain.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**嵌入法画学习曲线**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "利用随机森林特征重要性属性feature_importances_定义阈值范围，以嵌入选择模型SelectFromModel为基础，通过交叉验证cross_val_score得到每个阈值下模型得分情况。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "22:12:988578\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "importance = RFC_clf.fit(Xtrain,Ytrain).feature_importances_\n",
    "threshold = np.linspace(0,importance.max(),20)\n",
    "score = []\n",
    "time0 = time()\n",
    "for i in threshold:\n",
    "    X_embedded = SelectFromModel(RFC_clf,threshold=i).fit_transform(Xtrain,Ytrain)\n",
    "    val = cross_val_score(RFC_clf,X_embedded,Ytrain,cv=5).mean()\n",
    "    score.append(val)\n",
    "print(datetime.datetime.fromtimestamp(time()-time0).strftime(\"%M:%S:%f\"))\n",
    "plt.plot(threshold,score)\n",
    "plt.show();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9453910343465477"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.max(score) #最高分"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "最高分对应的重要性阈值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.031000416340192495"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "threshold[np.argmax(score)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_embedded = SelectFromModel(RFC_clf,threshold=0.031000416340192495).fit_transform(Xtrain,Ytrain)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [],
   "source": [
    "col_k = list(Xtrain.columns[RFC_clf.feature_importances_>0.031000416340192495])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**利用阈值选择出 8 个特征**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [],
   "source": [
    "col_k_ = ['lasthtlordergap',\n",
    " 'cityorders',\n",
    " 'lastpvgap',\n",
    " 'cr',\n",
    " 'sid',\n",
    " 'visitnum_oneyear',\n",
    " 'h']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "将数组转行为DataFrame数据框"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>lasthtlordergap</th>\n",
       "      <th>cityuvs</th>\n",
       "      <th>cityorders</th>\n",
       "      <th>lastpvgap</th>\n",
       "      <th>cr</th>\n",
       "      <th>sid</th>\n",
       "      <th>visitnum_oneyear</th>\n",
       "      <th>h</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>713.0</td>\n",
       "      <td>5.387</td>\n",
       "      <td>0.680</td>\n",
       "      <td>312.0</td>\n",
       "      <td>1.14</td>\n",
       "      <td>111.0</td>\n",
       "      <td>2162.0</td>\n",
       "      <td>18.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>97890.0</td>\n",
       "      <td>3.853</td>\n",
       "      <td>0.027</td>\n",
       "      <td>3594.0</td>\n",
       "      <td>1.00</td>\n",
       "      <td>54.0</td>\n",
       "      <td>1397.0</td>\n",
       "      <td>22.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4601.0</td>\n",
       "      <td>11.573</td>\n",
       "      <td>0.813</td>\n",
       "      <td>299.0</td>\n",
       "      <td>1.07</td>\n",
       "      <td>385.0</td>\n",
       "      <td>2881.0</td>\n",
       "      <td>15.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-1.0</td>\n",
       "      <td>10.567</td>\n",
       "      <td>3.033</td>\n",
       "      <td>1273.0</td>\n",
       "      <td>1.00</td>\n",
       "      <td>37.0</td>\n",
       "      <td>1218.0</td>\n",
       "      <td>15.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>52076.0</td>\n",
       "      <td>0.160</td>\n",
       "      <td>0.013</td>\n",
       "      <td>31216.0</td>\n",
       "      <td>2.00</td>\n",
       "      <td>61.0</td>\n",
       "      <td>318.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   lasthtlordergap  cityuvs  cityorders  lastpvgap    cr    sid  \\\n",
       "0            713.0    5.387       0.680      312.0  1.14  111.0   \n",
       "1          97890.0    3.853       0.027     3594.0  1.00   54.0   \n",
       "2           4601.0   11.573       0.813      299.0  1.07  385.0   \n",
       "3             -1.0   10.567       3.033     1273.0  1.00   37.0   \n",
       "4          52076.0    0.160       0.013    31216.0  2.00   61.0   \n",
       "\n",
       "   visitnum_oneyear     h  \n",
       "0            2162.0  18.0  \n",
       "1            1397.0  22.0  \n",
       "2            2881.0  15.0  \n",
       "3            1218.0  15.0  \n",
       "4             318.0   5.0  "
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Xtrain_new = pd.DataFrame(X_embedded,columns = col_k )\n",
    "Xtrain_new.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "通过切片索引需要的列，重置索引，并查看前5行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [],
   "source": [
    "Xtest_new = Xtest.loc[:,col_k_].reset_index(drop=True).head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "查看每个列之间的相关性"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**过滤高度相关的特征**\n",
    "热图用于特征间的相关性分析，通过绘制热图，分析发现有以下两个高度相关的变量，最终删除特征cityuvs。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10,8))\n",
    "sns.heatmap(Xtrain_new.corr(),annot=True,linewidths=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "发现cityorders 与 cityuvs 高度相关，删除其中一个列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "Xtrain_new.drop(columns='cityuvs',axis=1,inplace=True)\n",
    "Xtest_new.drop(columns='cityuvs',axis=1,inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**保存清洗后的数据**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "Xtrain_new.to_csv('Xtrain_new.csv')\n",
    "Xtest_new.to_csv('Xtest_new.csv')\n",
    "Ytrain.to_csv('Ytrain.csv')\n",
    "Ytest.to_csv('Ytest.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 建模与调参"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 弱评估器选择"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "23:04:214531\n",
      "0.7180918548591728 0\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "score = []\n",
    "time0 = time()\n",
    "for i in range(10,201,10):\n",
    "    rfc = RFC(n_estimators= i\n",
    "             ,max_depth=3\n",
    "             ,random_state=0)\n",
    "    score_ = cross_val_score(rfc,Xtrain_new,ytrain,cv=5).mean()\n",
    "    score.append(score_)\n",
    "print(datetime.datetime.fromtimestamp(time()-time0).strftime(\"%M:%S:%f\"))\n",
    "print(max(score),np.argmax(score))\n",
    "plt.figure(figsize=(8,6))\n",
    "plt.plot(range(10,201,10),score)\n",
    "plt.show();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 最大深度选择"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "05:41:132984\n",
      "得分： 0.8939818849773287 最大深度： 20\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "score = []\n",
    "time0 = time()\n",
    "for i in np.arange(3, 21, 1):\n",
    "    rfc = RFC(n_estimators= 10\n",
    "             ,max_depth= i\n",
    "             ,random_state=0)\n",
    "    score_ = cross_val_score(rfc,Xtrain_new,ytrain,cv=5).mean()\n",
    "    score.append(score_)\n",
    "print(datetime.datetime.fromtimestamp(time()-time0).strftime(\"%M:%S:%f\"))\n",
    "print('得分：',max(score),'最大深度：',np.arange(3, 21, 1)[np.argmax(score)])\n",
    "plt.figure(figsize=(8,6))\n",
    "plt.plot(np.arange(3, 21, 1),score)\n",
    "plt.show();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 最小分割样本数选择"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "08:21:638368\n",
      "得分： 0.8066083426188453 最小分支数： 2\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "score_2 = []\n",
    "time0 = time()\n",
    "for i in np.arange(2, 22, 1):\n",
    "    rfc = RFC(n_estimators= 10\n",
    "             ,max_depth= 15\n",
    "             ,min_samples_split= i\n",
    "             ,random_state=0)\n",
    "    score_ = cross_val_score(rfc,Xtrain_new,ytrain,cv=5).mean()\n",
    "    score_2.append(score_)\n",
    "print(datetime.datetime.fromtimestamp(time()-time0).strftime(\"%M:%S:%f\"))\n",
    "print('得分：',max(score_2),'最小分支数：',np.arange(2, 22, 1)[np.argmax(score_2)])\n",
    "plt.figure(figsize=(8,6))\n",
    "plt.plot(np.arange(2, 22, 1),score_2)\n",
    "plt.show();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 最小叶子结点样本数选择"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "04:14:709608\n",
      "得分： 0.8066083426188453 最小叶子数： 1\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "score_3 = []\n",
    "time0 = time()\n",
    "for i in np.arange(1, 12, 1):\n",
    "    rfc = RFC(n_estimators= 10\n",
    "             ,max_depth= 15\n",
    "             ,min_samples_split= 2\n",
    "             ,min_samples_leaf = i\n",
    "             ,random_state=0)\n",
    "    score_ = cross_val_score(rfc,Xtrain_new,ytrain,cv=5).mean()\n",
    "    score_3.append(score_)\n",
    "print(datetime.datetime.fromtimestamp(time()-time0).strftime(\"%M:%S:%f\"))\n",
    "print('得分：',max(score_3),'最小叶子数：',np.arange(1, 12, 1)[np.argmax(score_3)])\n",
    "plt.figure(figsize=(8,6))\n",
    "plt.plot(np.arange(1, 12, 1),score_3)\n",
    "plt.show();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 最小评估器再次选择"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "31:49:492826\n",
      "0.9043809229615084 最佳分类器数： 180\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "score_4 = []\n",
    "time0 = time()\n",
    "for i in range(10,201,10):\n",
    "    rfc = RFC(n_estimators= i\n",
    "             ,max_depth=20\n",
    "             ,random_state=0)\n",
    "    score_ = cross_val_score(rfc,Xtrain_new,ytrain,cv=5).mean()\n",
    "    score_4.append(score_)\n",
    "print(datetime.datetime.fromtimestamp(time()-time0).strftime(\"%H:%M:%S\"))\n",
    "print(max(score_4),'最佳分类器数：',range(10,201,10)[np.argmax(score_4)])\n",
    "plt.figure(figsize=(8,6))\n",
    "plt.plot(range(10,201,10),score_4)\n",
    "plt.show();\n",
    "# 运行1个半小时"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 确定参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [],
   "source": [
    "clf = RFC(n_estimators=180\n",
    "         ,max_depth=15\n",
    "         ,min_samples_leaf=1\n",
    "         ,min_samples_split=2\n",
    "         ,random_state=0\n",
    "         )\n",
    "clf = clf.fit(Xtrain_new,ytrain)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "查看训练集和测试集的分数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8311662235362908"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf.score(Xtrain_new,ytrain)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8119391458799907"
      ]
     },
     "execution_count": 108,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf.score(Xtest_new,ytest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [],
   "source": [
    " clf = RFC(n_estimators=180\n",
    "         ,max_depth=20\n",
    "         ,min_samples_leaf=1\n",
    "         ,min_samples_split=2\n",
    "         ,random_state=0\n",
    "         )\n",
    "clf = clf.fit(Xtrain_new,ytrain)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9425305870282317"
      ]
     },
     "execution_count": 110,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf.score(Xtrain_new,ytrain)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9049398923983833"
      ]
     },
     "execution_count": 111,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf.score(Xtest_new,ytest)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "另一种方法使用网格搜素，但不建议使用，耗时特别长"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# from sklearn.model_selection import GridSearchCV \n",
    "# time0 = time()\n",
    "# rfc = RFC(n_estimators= 10\n",
    "#           ,random_state=0)\n",
    "# GS = GridSearchCV(rfc,param_grid,cv=5)\n",
    "# GS.fit(Xtrain_new,ytrain)\n",
    "# print('最佳参数：',GS.best_params_)\n",
    "# print('最高得分：',GS.best_score_)\n",
    "# print(datetime.datetime.fromtimestamp(time()-time0).strftime(\"%H:%M:%S\"))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "查看特征重要性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.12778966, 0.13655849, 0.12457015, 0.13714743, 0.10208397,\n",
       "       0.13347588, 0.14272563, 0.09564879])"
      ]
     },
     "execution_count": 112,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf.feature_importances_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "定义函数绘制AUC曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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/W8uQEPQv//xnnnmcg4eTOOZZzpTs2YZv36WiIi4R+MEcSa+vuWW2Rw9mgFA6dKRvP9+XwWgSDEXGhpKy5YtadasGT179uTgwYPZr61Zs4bOnTvTqFEjGjRowNNPP421Nvv1zz77jPj4eJo2bUqrVq24//773fgj5GnFihXceuutbpeRp2effZb69evTqFEj5s+ff8p9vvzySy644AKaNWvGkCFDyMzMBODf//43LVu2zP47DA0NZf/+/aSnp9OxY8fs/fzKWhtQj9bVsTb5L1tYPvzwV1umzLMWnrQjRy4stOOKlHRr1651uwRbqlSp7Oc33nijHTVqlLXW2pSUFFu3bl07f/58a621R44csd27d7djxoyx1lq7evVqW7duXbtu3TprrbWZmZn29ddfL9TaMjIyzvoYAwYMsCtXrizSzyyINWvW2ObNm9vU1FS7adMmW7duXZuZmXnCPllZWbZ69ep2/fr11lprH3vsMfvmm2+edKw5c+bYyy67LHv9ySeftBMnTjzl557q3x6wzJ5BpgRod+jZS0nJ4N575/HGGz8D0Lt3I+6/v73LVYkEqJf8dIrifpv/Pl7t27dn1apVAEyePJmLL76Yrl27AhATE8OYMWPo1KkTf//733nhhRf45z//SePGjQGnRXnHHXecdMzk5GTuuusuli1bhjGGJ554gv79+xMbG0tycjIA06ZN45NPPmHChAncdNNNREVFsWLFCi6++GJmzJjBypUrKVvWuaq8QYMGfPvtt4SEhHD77bezdetWAF555RUuvvjiEz47KSmJVatW0aJFCwB++ukn7rnnHlJTU4mOjuadd96hUaNGTJgwgRkzZpCcnExWVhZff/01//73v/nwww9JS0ujb9++/N///R8Affr0Ydu2baSmpnLPPfcwdOhQn3++pzJ79mwSEhKIjIykTp061K9fn59++on27Y9/lyYmJhIREUHDhg0B6NKlC88+++xJLdwpU6YwaNCg7PU+ffowcuRIBg8efFY15icwQ/AsT4yuWrWbhIRprFu3j8jIUF56qSt33tlGJ/lFAlRWVhZffPFF9hfrmjVraN269Qn71KtXj+TkZA4fPsyvv/7qU/fn008/TZkyZVi9ejUABw4cyPc927dv5/vvvyc0NJSsrCxmzpzJzTffzI8//kitWrU455xzuO666xgxYgQdOnRg69at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\n",
      "text/plain": [
       "<Figure size 504x396 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "model = RFC(n_estimators=180\n",
    "         ,max_depth=20\n",
    "         ,min_samples_leaf=1\n",
    "         ,min_samples_split=2\n",
    "         ,random_state=0\n",
    "         )\n",
    "# ROC\n",
    "y_score = model.fit(Xtrain_new, ytrain).predict_proba(Xtest_new)  # 随机森林\n",
    "fpr, tpr, thresholds = roc_curve(ytest, y_score[:, 1])\n",
    "roc_auc = auc(fpr, tpr)\n",
    "def drawRoc(roc_auc,fpr,tpr):\n",
    "    plt.subplots(figsize=(7, 5.5))\n",
    "    plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc)\n",
    "    plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')\n",
    "    plt.xlim([0.0, 1.0])\n",
    "    plt.ylim([0.0, 1.05])\n",
    "    plt.xlabel('False Positive Rate')\n",
    "    plt.ylabel('True Positive Rate')\n",
    "    plt.title('ROC Curve')\n",
    "    plt.legend(loc=\"lower right\")\n",
    "    plt.show()\n",
    "drawRoc(roc_auc, fpr, tpr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "公众号【数据STUDIO】以Python为核心语言，垂直于数据科学领域，分享大量知识总结及实战项目经验分享，包括数据分析、可视化、机器学习、数据挖掘等领域，从入门到进阶！每篇文章源数据和源码均可免费获取！\n",
    "\n",
    "![数据STUDIO](http://liuzaoqi.oss-cn-beijing.aliyuncs.com/2021/09/17/shu-justudio.jpg?域名/sample.jpg?x-oss-process=style/stylename)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![](http://liuzaoqi.oss-cn-beijing.aliyuncs.com/2021/09/16/16317972442543.jpg?域名/sample.jpg?x-oss-process=style/stylename)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": false,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "288px"
   },
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
